home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / pascal / bp7bugs2.zip / BP7BUGS2.LST < prev    next >
File List  |  1993-05-20  |  9KB  |  207 lines

  1. BP7BUGS2.LST - Version 2 of BP 7.0 bug list
  2.  
  3. This is the second edition of my completely *un*official list of bugs in
  4. BP 7.0.
  5.  
  6. There are more limitations to this list than there were to the previous
  7. lists, because BP 7.0 is a lot bigger than TP 6.0.  I'm unable to test
  8. most Windows bugs, so they probably won't end up in this list.  Most of
  9. my work is in real mode, so there's a definite bias towards bugs there.
  10. Finally, I have stopped collecting TurboVision bugs, now that Brad
  11. Williams has started maintaining a TV bug list.  See the file TVBUGS.LST
  12. for instructions on how to get a copy of his list.
  13.  
  14. Bugs which have been fixed in the March 1993 BP 7.01 maintenance release
  15. have been removed from the main list, and are included only in the file
  16. 700.LST. (To get a copy of the maintenance release, call Borland
  17. customer service. They charge $10 for shipping.) If you're interested in
  18. TP 6 bugs, look for TP6BUGS7.LST, the final release of my TP 6 bug list.
  19.  
  20. I'm sure there are errors in this list, and some things that I call bugs
  21. are "design limitations" or "as designed".  Don't rely on any of the
  22. fixes; none of them are official (even if they look like they come from
  23. Borland); only Borland can give you official fixes.  If you want a
  24. reliable list, write to Borland (in particular Zack Urlocker, at
  25. Compuserve address 76217,1053 or Internet address
  26. 76217.1053@compuserve.com) and complain.  Professional tools deserve
  27. professional support; a secret bug list, or one maintained by an
  28. amateur, is not professional support.
  29.  
  30. The list is very abbreviated;  if any of the items are too obscure, ask
  31. and I'll expand on them.  One abbreviation I've been asked about:
  32. "BASM" is the built-in assembler used in asm blocks.
  33.  
  34. The bugs reported here are gleaned from reports from dozens of people.
  35. In particular, Gary Wiltshire sent me reports on several new BGI bugs.
  36.  
  37. Bugs in the list are numbered in order from oldest to newest.  However,
  38. bugs 1 to 27 are taken from the last TP 6 list; those are more or less
  39. in newest to oldest order, because I was too lazy to reverse the list.
  40.  
  41. I'd appreciate it if anyone sent me their own bug reports and bug list;
  42. I'll publicize it on Usenet, Fidonet and Compuserve. I'd also appreciate
  43. hearing about patches.  Please send demonstration code along with your
  44. report; I don't like to put bug reports here unless I can reproduce
  45. them.  If you don't have access to any of the sources above, I don't
  46. know how you came across this file; but I'll send you the latest version
  47. on diskette if you send me $10 (US or Canadian).  I'll also fill up the
  48. diskette with various utilities and things I've written; let me know if
  49. there's any particular type you're interested in.
  50.  
  51. Duncan Murdoch
  52.  
  53.  dmurdoch@mast.queensu.ca  (Internet address)
  54.  71631,122                 (Compuserve)
  55.  DJ Murdoch at 1:249/99.5. (Fidonet)
  56.  
  57.  337 Willingdon Ave.
  58.  Kingston, Ontario, Canada
  59.  K7L 4J3
  60.  
  61. ------ Leftover bugs from TP 6 --------
  62.  
  63. 1.  The string formatting routines get the 19th digit wrong on very
  64. large Comp numbers.
  65.  
  66. 2.  Actual heap allocation can be 511 bytes more than the maximum
  67. specified in the $M directive.
  68.  
  69. 4.  The compiler doesn't detect overlapping case constants.  Only the
  70. first matching case is executed.
  71.  
  72. 5.  Single and Double types typed constants are not correctly
  73. initialized for absolute values smaller than 1.17xxxxE-38 respectively
  74. 2.22xxxxE-308 (their value wil be zero instead).  The lower limit of the
  75. dynamic range should be 1.5E-45 and 5.0E-324 respectively.
  76.  
  77. 6.  BASM has the ranges of legal values incorrect for IN, OUT, INT, ENTER,
  78. AAM, AAD instructions.
  79.  
  80. 7.  BASM allows references to nonexistent registers on the coprocessor,
  81. e.g. FADD ST, ST(123456).
  82.  
  83. 8.  The IDE doesn't properly single step across AAM xx and AAD xx
  84. instructions.
  85.  
  86. 9.  The coprocessor emulator doesn't handle special arguments like INF
  87. and NaN properly.  Quiet NaNs are treated as signalling NaNs, and
  88. operations on INF return NaN.
  89.  
  90. 10. TRect.Union and TRect.Intersect don't perform set operations.  If
  91. two rectangles don't intersect, TRect.Intersect always returns
  92. ((0,0),(0,0)); the union of that empty rectangle with any other
  93. rectangle always includes the point (0,0).
  94.  
  95. 11. The Str procedure rounds nnn.5 differently than either the Round or
  96. Trunc functions when printing reals with no decimal places.  In $N-
  97. mode, it is inconsistent; in $N+ mode, it consistently rounds up.
  98.  
  99. 12. The base type for a pointer type definition can't be a qualified
  100. identifier.
  101.  
  102. 13. Compile time evaluation of the ROUND() function is different than
  103. run-time evaluation in $N+ mode on numbers ending in .5.
  104.  
  105. 14. The coprocessor emulator doesn't properly emulate the FINCSTP and
  106. FDECSTP instructions in BASM.  (These aren't used by compiled Pascal
  107. code.)
  108.  
  109. 15. The coprocessor emulator doesn't respect the precision control bits.
  110.  
  111. 16. The SEG operator in BASM doesn't work on variables declared in the
  112. stack segment.
  113.  
  114. 17. Referencing fields of records in BASM in a WITH block doesn't add the
  115. base address.
  116.  
  117. 18. The instruction "IMUL AX, 16" (valid on an 80186+) is rejected by BASM.
  118. The equivalent "IMUL AX, AX, 16" does work (in $G+ mode).
  119.  
  120. 19. The coprocessor emulator does not respect the rounding bits internally
  121. or when storing results to Single or Double variables.
  122.  
  123. 20. The compiler won't allow the optional identifier in a variant record to
  124. be an already defined scalar type identifer.
  125.  
  126. 21. IN doesn't properly handle out of range values.  (What it does is to
  127. demote out of range scalars to byte, ignoring any high bits.)
  128.  
  129. 22. Writeln wipes out the status word in the coprocessor.
  130.  
  131. 23. You can allocate an array bigger than 65528 bytes on the heap; it may
  132. wrap around and trash whatever precedes it.
  133.  
  134. 24. The coprocessor emulator doesn't propagate NaNs the same way as a real
  135. coprocessor does.
  136.  
  137. 25. Complicated expressions involving Reals compiled $N+ will unnecessarily
  138. overflow the coprocessor stack.
  139.  
  140. 27. Range checking shouldn't apply to the limits in a for loop.
  141.  
  142. ------- New bugs in BP 7 --------
  143.  
  144. 28. Coprocessor errors are reported with the address normalized, but the
  145. IDE can't find source lines with errors specified that way.  Use the
  146. command line compilers with /F ssss:oooo to find them.
  147.  
  148. 30. On a 386, interrupt routines must explicitly save the extended
  149. registers EAX through to EDX or risk corrupting longint calculations and
  150. other programs.
  151.  
  152. 31. On a 386, longint calculations are unreliable in environments which
  153. don't preserve the extended registers.  So far, the only such
  154. environments that I've heard of are systems running Novell's
  155. non-dedicated file server version 2.2, which trashes EAX every timer tick.
  156. (A detector and protection scheme is available in TRASHSRC.ZIP.  A quick
  157. fix is just to set Test8086=0 at the start of your program.)
  158.  
  159. 35. Spurious compiler arithmetic overflow errors are generated in
  160. constant expressions containing products of negative numbers with zero.
  161.  
  162. 36. If a running program changes a file that's currently loaded in the
  163. IDE, when you exit you'll lose the IDE version no matter how you answer
  164. the dialog about which version to keep.
  165.  
  166. 39. Coprocessor exceptions aren't handled properly in protected mode.  BP and
  167. TDX are likely to be aborted by the error. Things are worse within Desqview,
  168. but that may be a Desqview bug.  Partially fixed in 7.01 - things are fine
  169. in DOS, they don't work in Windows or Desqview.
  170.  
  171. 40. In TURBO.EXE and BP.EXE, ^KR sometimes gives a junk error message
  172. about the file being a device if it doesn't exist (after the correct message).
  173.  
  174. 41. The ATT400.BGI driver is apparently messed up.  According to reports (I
  175. haven't tested this one) the TP 6 driver works fine.
  176.  
  177. 42. When written vertically, the bitmap fonts are aligned differently from the
  178. stroked fonts.  The bitmaps are aligned with the bottom of the letters, the
  179. stroked fonts with the tops.  Horizontally, both are aligned with the tops.
  180.  
  181. 45. Some versions of OS/2 come with a buggy mouse driver that won't allow
  182. programs run from the IDE under OS/2 to use the mouse.  A fix is supposed to
  183. be available from IBM.
  184.  
  185. 47. Contrary to the online help, Release() does not work in protected mode.
  186. (This is documented in the Language Guide.)
  187.  
  188. ------ New in release 2 of this list ----------------
  189.  
  190. 48. On certain machines, protected mode programs (including BP.EXE) will not
  191. read characters correctly. (E.g. repeated cursoring will insert digits into
  192. your text.)  Sometimes running "KEYB US" before BP fixes it; there are some
  193. rumours that Quarterdeck's QDPMI or other bad DPMI servers may be at fault;
  194. there are other rumours that it's a bad keyboard controller chip causing the
  195. trouble.
  196.  
  197. 50.  If a graphics driver (.BGI file) that you load manually isn't
  198. loaded at an address with offset 0, then registering it and calling initgraph
  199. twice will sometimes make your program abort.
  200.  
  201. 51.  (A leftover from TP6 that I forgot.)  The Graph.TextWidth function
  202. returns incorrect results when fonts are scaled.
  203.  
  204. 52.  In protected mode when using BGI, using RestoreCRTMode and
  205. SetGraphMode can leave BGI in an unstable state, and a GP fault may follow.
  206.  
  207.